﻿using System;
using System.Collections.Generic;
using System.IO;
using Mono.Data.Sqlite;

namespace VisualTrain
{
	// Класс для работы с базой данных
	public class DataBase
	{
		//Имя файла базы данных
		public static string NameDB = "db.sqlite";

		// Задаём путь к базе данных
		public static string dbPath = System.IO.Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal), NameDB);

		// Создаём новое подключение к базе
		private static SqliteConnection connection = new SqliteConnection ("Data Source=" + dbPath);

		public DataBase()
		{

		}

		// Получение результата запроса
		static public string GetString(string requery, string name)
		{
			string result = "";			// Выходная строка
			connection.Open ();		// Открываем соединение к базе данных
			using (var content = connection.CreateCommand ())		// Создаём запрос в базу
			{
				content.CommandText = requery;			// Задаём запрос
				var r = content.ExecuteReader ();		// Выполняем запрос
				r.Read ();								// Получаем результат
				result = r [name].ToString ();				// Получаем результат
				connection.Close ();					// Закрываем подключение к базе данных
				return result;
			}
		}

		// Получение всех строк по запросу
		static public List<string> GetData(string requery, string name)
		{
			List<string> result = new List<string> ();			// Выходные данные
			connection.Open ();									// Открываем соединение к базе данных
			using (var content = connection.CreateCommand ())
			{
				content.CommandText = requery;					// Задаём запрос
				var r = content.ExecuteReader ();				// Выполняем запрос
				while (r.Read ())								// Читаем данные
				{
					result.Add( r[name].ToString());
				}
				connection.Close ();							// Закрываем подключение к базе
				return result;
			}
		}

		// Получение количества результатов по запросу
		static public int GetCount(string requery)
		{
			int Count = 0;					// Количество строк в запросе
			connection.Open ();				// Открываем соединение к базе данных
			using ( var content = connection.CreateCommand () )
			{
				content.CommandText = requery;		// Задаём запрос
				var r = content.ExecuteReader ();	// Выполняем запрос
				while ( r.Read () )		// Читаем данные
					Count++;			// Увеличиваем счётчик
				connection.Close ();	// Закрываем подключение к базе
				return Count;
			}
		}
	}
}